A number of emerging, popular applications benefit from connecting to nodes in a network that meet certain criteria, instead of choosing a random set of server nodes in the network. For example, a streaming media client would benefit by connecting to a media server that is lightly loaded and has high downstream available bandwidth and low latency. More sophisticated applications and services may use dynamic service composition in which the problem entails identifying necessary service components matching required Quality of Service (QoS) criteria.
Finding the node or subset of nodes that meet some criteria of network metrics using an exhaustive search could translate to every node conducting measurements to every other node in the network. This approach is, at best, not scalable due to the extensive number of required measurements. Furthermore, existing systems do not include time when determining network metrics and instead force nodes into repeating their measurements continuously in order to adapt to network changes.